%# BEGIN BPS TAGGED BLOCK {{{
%# 
%# COPYRIGHT:
%#  
%# This software is Copyright (c) 1996-2004 Best Practical Solutions, LLC 
%#                                          <jesse@bestpractical.com>
%# 
%# (Except where explicitly superseded by other copyright notices)
%# 
%# 
%# LICENSE:
%# 
%# This work is made available to you under the terms of Version 2 of
%# the GNU General Public License. A copy of that license should have
%# been provided with this software, but in any event can be snarfed
%# from www.gnu.org.
%# 
%# This work is distributed in the hope that it will be useful, but
%# WITHOUT ANY WARRANTY; without even the implied warranty of
%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
%# General Public License for more details.
%# 
%# You should have received a copy of the GNU General Public License
%# along with this program; if not, write to the Free Software
%# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
%# 
%# 
%# CONTRIBUTION SUBMISSION POLICY:
%# 
%# (The following paragraph is not intended to limit the rights granted
%# to you to modify and distribute this software under the terms of
%# the GNU General Public License and is only of importance to you if
%# you choose to contribute your changes and enhancements to the
%# community by submitting them to Best Practical Solutions, LLC.)
%# 
%# By intentionally submitting any modifications, corrections or
%# derivatives to this work, or any other work intended for use with
%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
%# you are the copyright holder for those contributions and you grant
%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
%# royalty-free, perpetual, license to use, copy, create derivative
%# works based on those contributions, and sublicense and distribute
%# those contributions and any derivatives thereof.
%# 
%# END BPS TAGGED BLOCK }}}
<& /Elements/Header, 
    Title => $AssetObj->Name &>
<& /AssetTracker/Elements/Tabs, 
    Asset => $AssetObj, 
    current_tab => 'Asset/Display.html?id='.$AssetObj->id,
    Title => $AssetObj->Name &>

<& /Elements/ListActions, actions => \@Actions &>

<& /Elements/TitleBoxStart, title => loc('Asset metadata'), contentbg => '#ffffff' &>
%#<& /AssetTracker/Asset/Elements/ShowSummary,  Asset => $AssetObj, Attachments => $attachments &>
<& /AssetTracker/Asset/Elements/ShowSummary,  Asset => $AssetObj &>
<& /Elements/TitleBoxEnd &>

<BR>
% if ( $RTx::AssetTracker::ShowAssetHistory ) {
<& /AssetTracker/Asset/Elements/ShowHistory , 
      Asset => $AssetObj, 
      Assets => $Assets, 
      Collapsed => $ARGS{'Collapsed'}, 
      ShowHeaders => $ARGS{'ShowHeaders'},
      MaxRows => $RTx::AssetTracker::ShowAssetHistory,
      Attachments => $attachments,
      AttachmentContent => $attachment_content
      &> 
% }

  
<%ARGS>
$id => undef
$Create => undef
$ShowHeaders => 0
$Collapsed => undef
$AssetObj => undef
$Actions => undef
</%ARGS>

<%INIT>

$m->comp('/Elements/Callback', _CallbackName => 'Initial', AssetObj => $AssetObj, ARGSRef => \%ARGS);

my ($linkid, $message, @Actions, $tid, $Assets);  
push(@Actions, @$Actions) if $Actions;

unless ($id || $AssetObj) {
    Abort('No asset specified');
}

if ($ARGS{'id'} eq 'new') {
    # {{{ Create a new asset
    
    my $Type = new RTx::AssetTracker::Type($session{'CurrentUser'});	
    unless ($Type->Load($ARGS{'Type'})) {
	Abort('Type not found');
    }
    
    unless ($Type->CurrentUserHasRight('CreateAsset')) {
	Abort('You have no permission to create assets of that type.');
    }
    ($AssetObj, @Actions) =
	CreateAsset(Attachments => $session{'Attachments'}, %ARGS);
    delete $session{'Attachments'};
    unless ($AssetObj->CurrentUserHasRight('ShowAsset')) {
	Abort("No permission to view newly created asset #".$AssetObj->id.".");
	}
    # }}}
} else { 
    if (!$AssetObj) {

	$AssetObj = RTx::AssetTracker::Asset->new($session{'CurrentUser'});

	$AssetObj = LoadAsset($ARGS{'id'});
	unless ($AssetObj->CurrentUserHasRight('ShowAsset')) {
	    Abort("No permission to view asset");
	}
    }

    #if (defined $ARGS{'Action'}) {
	#if ($ARGS{'Action'} =~ /^(Steal|Kill|Take|SetTold)$/) {
	    #my $action = $1;
	    #my ($res, $msg)=$AssetObj->$action();
	    #push(@Actions, $msg);
	#}
    #}

    #$ARGS{'UpdateContent'} =~ s/\r\n/\n/g;
    #if ( $ARGS{'UpdateTimeWorked'} ||
	 #$session{'Attachments'} || 
	 #(   $ARGS{'UpdateContent'} ne ''
	     #&& $ARGS{'UpdateContent'} ne "-- \n"
	     #. $session{'CurrentUser'}->UserObj->Signature )) {
	#$ARGS{UpdateAttachments} = $session{'Attachments'};
	#ProcessUpdateMessage( ARGSRef   => \%ARGS,
			      #Actions   => \@Actions,
			      #AssetObj => $AssetObj );
	#delete $session{'Attachments'};
    #}
    #Process status updates
    my @BasicActions = ProcessAssetBasics(ARGSRef => \%ARGS, AssetObj=>$AssetObj);
    #my @results = ProcessAssetLinks( AssetObj => $AssetObj, ARGSRef => \%ARGS);
    my @results;
    push (@Actions, @BasicActions, @results);
}



$m->comp('/Elements/Callback', _CallbackName => 'BeforeDisplay',
	 AssetObj => \$AssetObj, Assets => \$Assets, ARGSRef => \%ARGS);


my $attachments = $m->comp('Elements/FindAttachments', Asset => $AssetObj, Assets => $Assets);
my $attachment_content = $m->comp('Elements/LoadTextAttachments', Asset => $AssetObj);

</%INIT>
